// Avue 表格列表的列显隐持久化
export const optionColumnMixin = {
  watch: {
    // 点击列显隐存储配置至本地缓存
    option: {
      handler (newVal) {
        console.log('混入 watch')
        // 根据自身需求设置唯一key，这里针对当前用户
        localStorage.setItem('firstouch_optionColumn_' + this.$route.path, JSON.stringify(newVal.column, (key, value) => {
          // 将函数转为字符串存储，由于JSON 不存函数会被忽略处理
          // console.log(key, value)
          if (typeof value === 'function') {
            return value.toString()
          }
          return value
        }))
      },
      deep: true
    },
  },
  created () {
    console.log('混入 created')
    const option = localStorage.getItem('firstouch_optionColumn_' + this.$route.path)
    if (option != null && option !== '' && option !== undefined) {
      this.option.column = JSON.parse(option, (key, value) => {
        // 由于Json不存储函数 所以可以将函数先转为字符串存储，然后再将字符串转为函数使用
        if (key === 'validator' || key === 'dicFormatter') {
          return eval('(' + value + ')')
        }
        return value
      })
    }
  },
}
